Subject: New Connect Flow for NETBIOS

From: "Steve Klein (254-5623)" <[email-masked]>
Date: Mon, 31 Jan 94 19:32:09 EST

Here is my proposal for the separation of the topology establishment
and circuit establishment for NETBIOS.  As before, your comments are
welcome and encouraged.

Steve

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

This proposal introduces a new type of NETBIOS_NQ and NETBIOS_NR message.
A NETBIOS_NQ_ex message is a NETBIOS_NQ message only for the purpose
of maintaining topology information for real and virtual MAC addresses
in the DLSw network.  The response to a NETBIOS_NQ_ex is an NETBIOS_NR_ex.

A NETBIOS_NQ_cs is a circuit-setup NETBIOS_NQ and is equivalent in function
to the existing NETBIOS_NQ documented in RFC 1434.  A NETBIOS_NQ_cs implies
that a DLSw circuit is to be established.  The response to a NETBIOS_NQ_cs
is a NETBIOS_NR_cs.

A NETBIOS_NQ_ex is differentiated from a NETBIOS_NQ_cs by the presence of a
B'1' in the first bit position of a new 'flags' field in the SSP message
header.  This 'flags' field would be replace the previously 'reserved'
field that follows the 'message type' field in both SSP headers.  The
NETBIOS_NR_ex will have the same bit set.

The NETBIOS_NR_cs will have the same format as the CANUREACH from RFC 1434
for compatibility with RFC 1434 DLSw implementations.

-----------------------------------------------------------------------------

New Connection Sequence: NETBIOS

   ======                            ___                           ======
   |    |        ---------        __/   \__       ---------        |    |
   |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
   ======        |   |   |      <  Network  >     |   |   |        ======
  /______\       ---------       \__     __/      ---------       /______\
                Origin DLSw         \___/        Target DLSw
   Origin         partner                          partner         Target
   Station                                                        Station

                DISCONNECTED                    DISCONNECTED
NAME_QUERY                     NETBIOS_NQ_ex                   NAME_QUERY
----------->                   ------------>  SEARCH_PENDING   ----------->   Note 1
   .                                                              .
   .                                                              .
NAME_QUERY                                                     NAME_QUERY
-----------> drop retries until found                T1 retry  ----------->

NAME_RECOGNIZED                  NETBIOS_NR_ex                   NAME_RECOGNIZED
 <----------                     <------------    DISCONNECTED   <-----------

SABME                          CANUREACH_cs                    TEST_cmd
----------->                   ------------>  RESOLVE_PENDING  ----------->   Note 2
          UA   can optionally                                     .
 < - - - - -    send UA here                                      .
                                                                  .
SABME                                                          TEST_cmd
-----------> retries are dropped                     T1 retry  ----------->   Note 3

                                  ICANREACH_cs                       TEST_rsp
             CIRCUIT_ESTABLISHED <------------  CIRCUIT_PENDING  <-----------
    TEST_cmd
 <----------                                                                  Note 4
TEST_rsp

---------->                    REACH_ACK
                               ------------>   CIRCUIT_ESTABLISHED
          UA
 <----------
                               CONTACT                         SABME/SNRM
                               ------------>  CONTACT_PENDING  ----------->
RR
----------->  (link station in local busy state)
          RNR
 <-----------                        CONTACTED                             UA
                  CONNECTED     <-------------     CONNECTED    <------------
RR            (link station taken out of local                 RR
----------->      busy state)                                  ------------>
           RR                                                              RR
 <-----------                                                   <------------

SESS_INIT                         IFRAME                       SESS_INIT
----------->                   ------------>                   ----------->
  SESS_CONFIRM                    IFRAME                         SESS_CONFIRM
 <-----------                   <-------------                  <------------
   IFRAME                          IFRAME                          IFRAME
<---------->                    <----------->                   <---------->

Note 1: A NETBIOS NAME_QUERY generates the new explorer NETBIOS_NQ_ex
        in the origin DLSw partner.  The target DLSw sends out the
        NETBIOS NAME_QUERY contained in the NETBIOS_NQ and goes into a
        new 'search only' state, SEARCH_PENDING.
Note 2: The first non-broadcast frame is received by origin partner so
        a circuit-setup CANUREACH is sent.  It would be up the the
        implementation to decide whether to acknowledge the SABME
        immediately or wait until the ICANREACH is received.  The
        CANUREACH_cs causes a DLC_START_DL in the target partner,
        resulting in a TEST frame and a state transition to
        RESOLVE_PENDING.  An DLC implementation that does not require a
        TEST_cmd/TEST_rsp exchange could make a transition directly into
        CIRCUIT_PENDING state.
Note 3: Retries of the SABME are dropped while the circuit setup takes
        place.
Note 4: Upon receipt of the ICANREACH_cs the origin partner starts a
        link station instance.  An implementation may optionally send a
        TEST_cmd when the station is started (like the 6611, for instance).
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Migration Flow - standard origin and RFC 1434 target

A NETBIOS_NR_cs received in response to a NETBIOS_NQ_ex indicates that
the target DLSw is down level (RFC 1434 implementation).  The receipt
of the NETBIOS_NR_cs means that a circuit has been started in the
target DLSw so a circuit must be started in the origin DLSw.

-----------------------------------------------------------------------------

New Connection Sequence: NETBIOS - standard origin and RFC 1434 target

   ======                            ___                           ======
   |    |        ---------        __/   \__       ---------        |    |
   |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
   ======        |   |   |      <  Network  >     |   |   |        ======
  /______\       ---------       \__     __/      ---------       /______\
                Origin DLSw         \___/        Target DLSw
   Origin         partner                          partner         Target
   Station      (standard)                       (RFC 1434)       Station

                DISCONNECTED                    DISCONNECTED
NAME_QUERY                     NETBIOS_NQ_ex                   NAME_QUERY
---------->                    ------------>  RESOLVE_PENDING  ----------->
   .                                                              .
   .                                                              .
NAME_QUERY                                                     NAME_QUERY
---------->  drop retries until found                T1 retry  ----------->

NAME_RECOGNIZED                  NETBIOS_NR_cs                   NAME_RECOGNIZED
 <---------- CIRCUIT_ESTABLISHED <------------ CIRCUIT_PENDING   <-----------

                               REACH_ACK
                               ------------>   CIRCUIT_ESTABLISHED

SABME                          CONTACT                         SABME/SNRM
---------->  CONNECT_PENDING   ------------>  CONTACT_PENDING  ----------->

RR
----------->  link station in local busy state
          RNR
 <-----------                        CONTACTED                             UA
                  CONNECTED     <-------------     CONNECTED    <------------

RR                                                             RR
----------->  link station taken out of local                  ------------>
                busy state
           RR                                                              RR
 <-----------                                                   <------------

SESS_INIT                         IFRAME                       SESS_INIT
----------->                   ------------>                   ----------->

  SESS_CONFIRM                    IFRAME                         SESS_CONFIRM
 <-----------                   <-------------                  <------------

   IFRAME                          IFRAME                          IFRAME
<---------->                    <----------->                   <---------->

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Migration Flow - RFC 1434 origin and standard target

A NETBIOS_NQ_cs received before a NETBIOS_NQ_ex indicates that origin
DLSw is down level (RFC 1434 implementation).  The receipt of the
NETBIOS_NQ_cs means that a circuit must be started in the target DLSw
because a NETBIOS_NR_cs will be sent is response to the NETBIOS_NQ_cs.

-----------------------------------------------------------------------------

New Connection Sequence: NETBIOS - RFC 1434 origin and standard target

   ======                            ___                           ======
   |    |        ---------        __/   \__       ---------        |    |
   |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
   ======        |   |   |      <  Network  >     |   |   |        ======
  /______\       ---------       \__     __/      ---------       /______\
                Origin DLSw         \___/        Target DLSw
   Origin         partner                          partner         Target
   Station      (RFC 1434)                       (standard)       Station

                DISCONNECTED                    DISCONNECTED
NAME_QUERY                     NETBIOS_NQ_cs                   NAME_QUERY
---------->                    ------------>  RESOLVE_PENDING  ----------->
   .                                                              .
   .                                                              .
NAME_QUERY                                                     NAME_QUERY
---------->  drop retries until found                T1 retry  ----------->

NAME_RECOGNIZED                  NETBIOS_NR_cs                   NAME_RECOGNIZED
 <---------- CIRCUIT_ESTABLISHED <------------ CIRCUIT_PENDING   <-----------

                               REACH_ACK
                               ------------>   CIRCUIT_ESTABLISHED

SABME                          CONTACT                         SABME/SNRM
---------->  CONNECT_PENDING   ------------>  CONTACT_PENDING  ----------->

RR
----------->  link station in local busy state
          RNR
 <-----------                        CONTACTED                             UA
                  CONNECTED     <-------------     CONNECTED    <------------
RR                                                             RR
----------->  link station taken out of local                  ------------>
                busy state
           RR                                                              RR
 <-----------                                                   <------------

SESS_INIT                         IFRAME                       SESS_INIT
----------->                   ------------>                   ----------->

  SESS_CONFIRM                    IFRAME                         SESS_CONFIRM
 <-----------                   <-------------                  <------------

   IFRAME                          IFRAME                          IFRAME
<---------->                    <----------->                   <---------->

-----------------------------------------------------------------------------